﻿#region librerías
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using Librerias;
#endregion

namespace Librerias
{
    /// <summary>
    /// Clase: CAD bibliografia
    /// </summary>
    public class CADBibliografia
    {
        /// <summary>
        /// para levantar la conexión
        /// </summary>
        SqlConnection con;

        /// <summary>
        /// Constructor por defecto
        /// </summary>
        public CADBibliografia()
        {
            con = new SqlConnection(CADConexion.connString);
        }

        /// <summary>
        /// Constructor por defecto mediante una ENBibliografia
        /// </summary>
        /// <param name="en">EN Bibliografia</param>
        /// <returns>1 si bien</returns>
        public int CrearBibliografia(ENBibliografia en)
        {

            int res = -1;

            try
            {
                con.Open();

                SqlCommand com = new SqlCommand("insert into bibliografia (bibAsignatura,bibEnlace,bibTitulo,bibAutor,bibEdicion,bibISBN,bibWeb,bibDatos) values('" +
                                                    en.Asig + "','" +
                                                    en.Enlace + "','" +
                                                    en.Titulo + "','" +
                                                    en.Autor + "','" +
                                                    en.Edicion + "','" +
                                                    en.Isbn + "','" +
                                                    en.Web + "','" +
                                                    en.Datos + "');", con);
                res = com.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                throw ex;
            }
            finally
            {
                con.Close();
            }

            return res;
        }

        /// <summary>
        /// Borra una Bibliografia dada su id
        /// </summary>
        /// <param name="idbiblio">id de la bibliografia a borrar</param>
        /// <returns>1 si Éxito</returns>
        public int EliminarBibliografia(int idbiblio)
        {
            int res = -1;

            try
            {
                con.Open();

                SqlCommand com = new SqlCommand("delete from bibliografia where bibId = " + idbiblio, con);
                res = com.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                throw ex;
            }
            finally
            {
                con.Close();
            }

            return res;
        }

        /// <summary>
        /// Nos desvolverá todas las bibliografías existentes
        /// </summary>
        /// <returns>DataTable con todas</returns>
        public DataTable ConsultaBibliografia()
        {
            DataTable res = new DataTable();

            try
            {
                con.Open();
                string select = "select * from bibliografia";

                SqlDataAdapter adaptadorSQL = new SqlDataAdapter(select, con);
                adaptadorSQL.Fill(res);

            }
            catch (SqlException ex)
            {
                res = null;
                throw ex;
            }
            finally
            {
                con.Close();
            }

            return res;
        }


        /// <summary>
        /// Nos desvolverá todas las bibliografías existentes
        /// </summary>
        /// <returns>DataTable con todas</returns>
        public DataTable ConsultaBibliografiaPorAsignatura(string asignatura)
        {
            DataTable res = new DataTable();

            try
            {
                con.Open();
                string select = "select * from bibliografia where bibAsignatura='"+ asignatura+"';";

                SqlDataAdapter adaptadorSQL = new SqlDataAdapter(select, con);
                adaptadorSQL.Fill(res);

            }
            catch (SqlException ex)
            {
                res = null;
                throw ex;
            }
            finally
            {
                con.Close();
            }

            return res;
        }

        /// <summary>
        /// Consultará en los campos de una bibliografía dada una cadena y un tipo
        /// </summary>
        /// <param name="cadena">cadena a buscar</param>
        /// <param name="tipo">criterio de búsqueda</param>
        /// <returns>DataTable con las encontradas</returns>
        public DataTable ConsultaBibliografia(string cadena, int tipo)
        {
            DataTable res = new DataTable();

            try
            {
                con.Open();
                string select = "select * from bibliografia";

                switch (tipo)
                {
                    case 0:
                        select += " where bibId like '%" + cadena + "%'";
                        break;
                    case 1:
                        select += " where bibAsignatura like '%" + cadena + "%'";
                        break;
                    case 2:
                        select += " where bibTitulo like '%" + cadena + "%'";
                        break;
                    case 3:
                        select += " where bibISBN like '%" + cadena + "%'";
                        break;

                }


                SqlDataAdapter adaptadorSQL = new SqlDataAdapter(select, con);
                adaptadorSQL.Fill(res);

            }
            catch (SqlException ex)
            {
                res = null;
                throw ex;
            }
            finally
            {
                con.Close();
            }

            return res;
        }


        /// <summary>
        /// Modificará una bibliografía dada una EN
        /// </summary>
        /// <param name="datos">EN</param>
        /// <returns>Si Éxito</returns>
        public int ModificarBibliografia(ENBibliografia datos)
        {
            int res = -1;

            try
            {
                con.Open();

                SqlCommand com = new SqlCommand("update bibliografia set " +
                                                "bibEnlace='" + datos.Enlace +
                                                "', bibTitulo='" + datos.Titulo +
                                                "', bibAutor='" + datos.Autor +
                                                 "', bibEdicion='" + datos.Edicion +
                                                  "', bibISBN='" + datos.Isbn +
                                                  "', bibWeb='" + datos.Web +
                                                  "', bibdatos='" + datos.Datos +
                                                    "' where bibId='" + datos.Id + "';", con);
                res = com.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                throw ex;
            }
            finally
            {
                con.Close();
            }

            return res;
        }

    }
}
